<#include "/@inc/funcMacros.ftl">
<#assign className = TriaGram + "E" + Prefix + LateType>
<#assign baseName = TriaGram + Prefix + LateType>
<#assign intfName = TriaGram + "I" + Prefix + LateType>
<#include "/@inc/copyright.txt">
<@pp.renameOutputFile name=className+"Factory.h">
</@pp.renameOutputFile>
#ifndef __${className}FACTORY_H
#define __${className}FACTORY_H
<#include "/@inc/copyright.txt">

#include "CATBaseUnknown.h"
#include "CATIContainer.h"

class ${intfName}_var;
class CATISpecObject;

/**
 * Class which extends the "${intfName}" component
 * <br>
 * It implements the interfaces :
 * <ol>
 *  <li>@see ${TriaGram}${Prefix}InterfacesFw.${intfName}Factory
 * </ol>
 */
class ${className}Factory: public CATBaseUnknown
{
    CATDeclareClass;

    public:
    //-----------------------------------------------------
    ${className}Factory();
    virtual ~${className}Factory();

    /**
     * Implements a function from an interface.
     * @see ${TriaGram}${Prefix}InterfacesFw.${intfName}Factory#Create${LateType}
     */
 
   virtual HRESULT  __stdcall Create${LateType}( ${intfName}_var & osp${LateType}) ;

    private:
	
    HRESULT             GetStartup (const CATUnicodeString  & ustrType,
									      CATISpecObject  ** oppIStartup);
};
#endif
